# Instalar los paquetes necesarios (solo la primera vez)
# install.packages("readxl")
# install.packages("plotly")
# install.packages("dplyr")
library(plotly)
library(readxl)
library(dplyr)
# Especifica la ruta a tu archivo de Excel
ruta_excel <- "C:/Users/uac_facsoc/Desktop/Gráfico_R_MCO.xlsx" 

# Carga la hoja de datos. Asegúrate de que los nombres de las columnas
# sean claros (por ejemplo: 'Y', 'X1', 'X2').
datos_regresion <- read_excel(ruta_excel, sheet = 1) 

# Mostrar las primeras filas para verificar la carga
head(datos_regresion)
## # A tibble: 6 × 5
##     Año     n     Y    X1    X2
##   <dbl> <dbl> <dbl> <dbl> <dbl>
## 1  1971     1    40     6     4
## 2  1972     2    44    10     4
## 3  1973     3    46    12     5
## 4  1974     4    48    14     7
## 5  1975     5    52    16     9
## 6  1976     6    58    18    12
# Define tu modelo: Y en función de X1 y X2
modelo_rlm <- lm(Y ~ X1 + X2, data = datos_regresion)

# Ver el resumen del modelo (opcional, pero útil)
summary(modelo_rlm)
## 
## Call:
## lm(formula = Y ~ X1 + X2, data = datos_regresion)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -1.8199 -0.7304  0.1302  0.9173  1.8108 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  31.9807     1.6318  19.598 2.25e-07 ***
## X1            0.6501     0.2502   2.599  0.03550 *  
## X2            1.1099     0.2674   4.150  0.00429 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.397 on 7 degrees of freedom
## Multiple R-squared:  0.9916, Adjusted R-squared:  0.9892 
## F-statistic: 414.8 on 2 and 7 DF,  p-value: 5.356e-08

— A. Generar el Plano de Regresión (Superficie) —

# 1. Crear rangos basados en los datos reales de tu Excel
range_X1 <- seq(min(datos_regresion$X1), max(datos_regresion$X1), length.out = 30)
range_X2 <- seq(min(datos_regresion$X2), max(datos_regresion$X2), length.out = 30)

# 2. Crear la matriz de predicción usando los nombres de tu modelo (Y ~ X1 + X2)
pred_fun <- function(x1, x2) {
  predict(modelo_rlm, newdata = data.frame(X1 = x1, X2 = x2))
}
Z_predicha <- outer(range_X1, range_X2, Vectorize(pred_fun))

— B. Construcción del Gráfico con Plotly —

# 1. Crear la superficie (Plano)
fig <- plot_ly(
  x = ~range_X1, 
  y = ~range_X2, 
  z = ~t(Z_predicha), 
  type = "surface",
  opacity = 0.6, 
  showscale = FALSE,
  name = "Plano de Regresión"
) 

# 2. Añadir los puntos reales del Excel
fig <- fig %>% add_markers(
  data = datos_regresion,
  x = ~X1, 
  y = ~X2, 
  z = ~Y,
  marker = list(
    size = 4, 
    color = '#27ae60', 
    line = list(color = 'black', width = 1)
  ),
  name = "Datos Reales",
  inherit = FALSE
)

# 3. PERSONALIZACIÓN DE NOMBRES (Edita lo que está entre comillas)
fig <- fig %>% layout(
  title = "Análisis de Regresión Múltiple: Visualización 3D",
  scene = list(
    xaxis = list(title = "Inversión en Publicidad ($)"), # Cambia esto por tu X1
    yaxis = list(title = "Fuerza de Ventas (Pers.)"),    # Cambia esto por tu X2
    zaxis = list(title = "Ingresos Totales (Y)")        # Cambia esto por tu Y
  )
)

# 4. Mostrar el gráfico final
fig

— C. Resultados Estadísticos —

A continuación, se presentan los coeficientes estimados del modelo. Estos valores representan el impacto de cada variable independiente sobre la variable dependiente.

library(stargazer)
stargazer(modelo_rlm, 
          type = "html", 
          title = "Tabla 1: Resultados de la Regresión Múltiple",
          dep.var.labels = "Ingresos Totales (Y)",
          covariate.labels = c("Inversión en Publicidad (X1)", "Fuerza de Ventas (X2)"),
          digits = 3)
Tabla 1: Resultados de la Regresión Múltiple
Dependent variable:
Ingresos Totales (Y)
Inversión en Publicidad (X1) 0.650**
(0.250)
Fuerza de Ventas (X2) 1.110***
(0.267)
Constant 31.981***
(1.632)
Observations 10
R2 0.992
Adjusted R2 0.989
Residual Std. Error 1.397 (df = 7)
F Statistic 414.849*** (df = 2; 7)
Note: p<0.1; p<0.05; p<0.01

— D. Predicción de Escenario —

Utilizando el modelo ajustado, podemos predecir un valor esperado. Por ejemplo, si invertimos 50 en Publicidad y contamos con 30 personas en la Fuerza de Ventas:

Resultado de la Predicción: El valor estimado para la variable dependiente (Y) es de: 97.78.

— E. Diagnóstico del Modelo (Visualización de Residuos 3D) —

En este gráfico, las líneas verticales representan el residuo. Los puntos con colores más intensos indican dónde el modelo tiene mayor error de predicción.

— F. Interpretación de Significancia —

Conclusión Técnica:

  • La variable X1 (Publicidad) es estadísticamente significativa (p < 0.05), lo que implica que tiene un impacto real sobre las ventas.
  • La variable X2 (Fuerza de Ventas) es estadísticamente significativa (p < 0.05) para explicar el comportamiento de Y.